/* Ufscar Sorocaba
 * Estrutura de Dados 2 -  Trabalho 01 - Organização e Indexação de Arquivos
 * Prof.  Tiago Agostinho de Almeida
 * Eduardo Kiyoshi Kamikabey RA: 380229
 * Francisco Augusto César de Camargo Bellaz Guiraldelli RA: 379840
 * 
 *Esta aplicação tem por finalidade registrar a coleção de vídeos de um colecionador, 
 * ela faz inserção de filmes, procura por chave primária e título em português, altera a 
 * nota dada pelo filme, apaga o filme cadastrado, e lista os filmes cadastrados nesse 
 * programa.
 * 
 * O programa em sua totalidade é composto por três arquivos onde está implementado o código, 
 * mais 3 arquivos para registros dos dados, são eles:
 *      main.cpp - arquivo onde está a interface com o usuário e as chamadas principais 
 * do programa;
 *      filme.cpp - arquivo onde está implementado todos as funções do programa;
 *      filme.h   - header file onde contém as classes e os protótipos da funções utilizadas 
 * no filme.cpp;
 *      movie.dat - arquivo de registro da coleção de filmes do usuário;
 *      iprimary.idx - arquivo onde se encontra o índice primário contendo chave primária 
 * e rrn do arquivo de registros;
 *      ititle.idx - arquivo onde se encontra o índice secundário composto por título em 
 * português e chave primária.
 *
 * Created on 17 de Setembro de 2011, 13:08
 */

#include "filme.h"

using namespace std;

/*
 * 
 */
int main() {

    abreArquivos();
    vector<IndicePrimario> ListaIndPrimario;
    ListaIndPrimario.clear();
    vector<IndiceSecundario> ListaIndSecundario;
    ListaIndSecundario.clear();
    copiaIndicePrimario(&ListaIndPrimario);
    copiaIndiceSecundario(&ListaIndSecundario);
	int opcao;
	opcao = 1;
	while (opcao < 8 && opcao > 0){
		/*Menu exibido no início da aplicação*/
		cout << "Bemvindo a John Doe's movies collection, por favor, selecione uma opção: "<< endl;
		cout << "1 - para inserir um novo filme" << endl;
		cout << "2 - para apagar um filme;" << endl;
		cout << "3 - para mudar a nota de um filme;" << endl;
		cout << "4 - procurar um filme pelo código;" << endl;
		cout << "5 - procurar um filme pelo título em portugues" << endl;
		cout << "6 - para listar todos os filmes" << endl;
		cout << "7 - salvar alterações no disco" << endl;
		cout << "qualquer outro número para sair." << endl;
		cout << "Digite uma das opções acima: " << endl;
		cin >> opcao;
                getchar();
		
		switch (opcao){
                    case 1: inserirFilme(&ListaIndPrimario, &ListaIndSecundario); break;
		
			case 2: if(apagarFilme(&ListaIndPrimario, &ListaIndSecundario))
                            cout << "Filme Apagado com sucesso!" << endl;
                        else 
                            cout << "Filme não pode ser apagado" << endl;
                            break;
			case 3: if(mudarNotaFilme(&ListaIndPrimario))
                            cout << "Nota modificada com sucesso!" << endl;
                        else
                            cout << "Nota não modificada!" << endl;
                                                
                        break;
			case 4: ordenarIndice(&ListaIndPrimario, &ListaIndSecundario);
                            if(buscaChave(&ListaIndPrimario, &ListaIndSecundario))
                            cout<<"foi"; else cout<<"não foi";
                            break;
			case 5: if(buscaTitulo(&ListaIndPrimario, &ListaIndSecundario))
                            cout<<"foi"; else cout<<"não foi"; break;
                     
			case 6: listarFilme(&ListaIndPrimario); break;
			case 7: if(salvarArquivo(&ListaIndPrimario, &ListaIndSecundario))
                                   cout << "Arquivos gravados com sucesso!" << endl;
                        else cout << "Arquivos não foram gravados!" << endl;
                            break;
		}
        }
        ordenarIndice(&ListaIndPrimario, &ListaIndSecundario);
        salvarIndice(&ListaIndPrimario); 
        salvaIndiceSec(&ListaIndSecundario);
    
    
    
    return 0;

}